#ifndef __CK_OP_RASTER_ENTROPY_H__
#define __CK_OP_RASTER_ENTROPY_H__

#include "zModule.h"
#include "ckOpRasterEntropyInput.h"
#include "ckOpRasterEntropyRule.h"

namespace ck
{
	class OpInput;
	class Rule;

	namespace check
	{
		class CheckResult;
	}

	class OpRasterEntropy : public Operator
	{
	public:
		OpRasterEntropy(Module* pModule, z_uint32 nCode);
		virtual ~OpRasterEntropy();

	public:
		virtual OpInput*	GetInput();
		virtual Output*		GetOutput();
		virtual OpRule*		GetRule();

		virtual RESULTCODE	Run();
		virtual void		SetParameter(z_uint32 i, void* pParam);
		virtual z_uint32	GetParameterCount();
		virtual check::CheckResult* GetResult();

	public:
		virtual const char*	GetID();
		virtual const char*	GetName();
		virtual z_uint32	GetCode();
		virtual const char*	GetDescription();
		virtual const char* GetModuleName();

		virtual bool		IsManual();

		virtual Module*		GetModule();

	private:
		Module*	m_pModule;
		z_uint32 m_nCode;

		z_uint32 m_nParamCount;
		check::CheckResult* m_pResult;

		OpRasterEntropyInput m_input;
		OpRasterEntropyRule	m_rule;
	};

}


#endif //__CK_OP_RASTER_ENTROPY_H__
